#include "BulletDynamics/ConstraintSolver/btHinge2Constraint.h"
#ifdef __cplusplus
extern "C" {
#endif
btHinge2Constraint* bullet_NewbtHinge2Constraint(btRigidBody* rbA,btRigidBody* rbB,btVector3* anchor,btVector3* axis1,btVector3* axis2){
	btRigidBody& c_arg_rbA=(btRigidBody&)(*rbA);
	btRigidBody& c_arg_rbB=(btRigidBody&)(*rbB);
	btVector3& c_arg_anchor=(btVector3&)(*anchor);
	btVector3& c_arg_axis1=(btVector3&)(*axis1);
	btVector3& c_arg_axis2=(btVector3&)(*axis2);
	btHinge2Constraint* wrap_out = new btHinge2Constraint(c_arg_rbA,c_arg_rbB,c_arg_anchor,c_arg_axis1,c_arg_axis2);
	return wrap_out;
}

btVector3* bullet_btHinge2Constraint_getAnchor(btHinge2Constraint* c_this){
	btVector3 const& c_out = c_this->getAnchor();
	btVector3* wrap_out = (btVector3*)(&c_out);
	return wrap_out;
}

btVector3* bullet_btHinge2Constraint_getAnchor2(btHinge2Constraint* c_this){
	btVector3 const& c_out = c_this->getAnchor2();
	btVector3* wrap_out = (btVector3*)(&c_out);
	return wrap_out;
}

double bullet_btHinge2Constraint_getAngle1(btHinge2Constraint* c_this){
	btScalar c_out = c_this->getAngle1();
	double wrap_out = (c_out);
	return wrap_out;
}

double bullet_btHinge2Constraint_getAngle2(btHinge2Constraint* c_this){
	btScalar c_out = c_this->getAngle2();
	double wrap_out = (c_out);
	return wrap_out;
}

btVector3* bullet_btHinge2Constraint_getAxis1(btHinge2Constraint* c_this){
	btVector3 const& c_out = c_this->getAxis1();
	btVector3* wrap_out = (btVector3*)(&c_out);
	return wrap_out;
}

btVector3* bullet_btHinge2Constraint_getAxis2(btHinge2Constraint* c_this){
	btVector3 const& c_out = c_this->getAxis2();
	btVector3* wrap_out = (btVector3*)(&c_out);
	return wrap_out;
}

void bullet_btHinge2Constraint_setLowerLimit(btHinge2Constraint* c_this,double ang1min){
	btScalar c_arg_ang1min=ang1min;
	c_this->setLowerLimit(c_arg_ang1min);
}

void bullet_btHinge2Constraint_setUpperLimit(btHinge2Constraint* c_this,double ang1max){
	btScalar c_arg_ang1max=ang1max;
	c_this->setUpperLimit(c_arg_ang1max);
}

#ifdef __cplusplus
}
#endif
